Переменные окружения
Переменные окружения используются для изменения некоторых низкоуровневых настроек Xray.
Переменные окружения могут быть записаны в окружение текущего процесса Xray из раздела env после чтения конфигурации либо переданы через командную оболочку или диспетчер служб до запуска Xray.
EnvObject
EnvObject соответствует разделу env в файле конфигурации и представляет собой набор имён и значений переменных окружения.
{
"env": {
"XRAY_LOCATION_ASSET": "/usr/local/share/xray",
"XRAY_BUF_READV": "true",
"XRAY_RAY_BUFFER_SIZE": "2",
"GODEBUG": "gctrace=1,schedtrace=1000,scheddetail=1"
// ...
}
}2
3
4
5
6
7
8
9
имя переменной окружения: string
Имя и значение каждой переменной окружения должны быть строками. После чтения и объединения всех файлов конфигурации Xray записывает элементы env в окружение текущего процесса перед созданием модулей.
TIP
При использовании нескольких файлов конфигурации их разделы env объединяются по ключам. Одинаковый ключ из более позднего файла заменяет предыдущее значение.
Раздел env задаёт имя именно в записанном виде и заменяет существующую переменную процесса с точно таким же именем.
WARNING
Раздел env применяется только после того, как файлы конфигурации были найдены, прочитаны и объединены. Некоторые переменные окружения необходимо задать через командную оболочку или диспетчер служб до запуска Xray, например:
XRAY_JSON_STRICTXRAY_LOCATION_CONFIGXRAY_LOCATION_CONFDIRGOGCGOMEMLIMITGOMAXPROCSGOTRACEBACK
Настройка переменных окружения перед запуском Xray
В следующих примерах командная оболочка или диспетчер служб используются для настройки пути к файлам ресурсов и строгого анализатора JSON:
# Задать переменные в текущей оболочке и запущенных из неё процессах
export XRAY_LOCATION_ASSET=/usr/local/share/xray
export XRAY_JSON_STRICT=true
# Либо задать их только для одного запуска Xray, разделяя пробелами
XRAY_LOCATION_ASSET=/usr/local/share/xray XRAY_JSON_STRICT=true xray run2
3
4
5
6
# Задать переменные в текущем сеансе PowerShell и запущенных из него процессах
$env:XRAY_LOCATION_ASSET = "C:\Xray"
$env:XRAY_JSON_STRICT = "true"2
3
:: Задать переменные в текущем сеансе CMD и запущенных из него процессах
set "XRAY_LOCATION_ASSET=C:\Xray"
set "XRAY_JSON_STRICT=true"2
3
# Задать переменные в разделе [Service] службы Xray
[Service]
Environment="XRAY_LOCATION_ASSET=/usr/local/share/xray"
Environment="XRAY_JSON_STRICT=true"2
3
4
Встроенные переменные Xray
Расположение файла конфигурации
- Имя:
XRAY_LOCATION_CONFIG. - Значение по умолчанию: каталог исполняемого файла Xray.
Эта переменная задаёт каталог, содержащий файл config.json.
Запись в разделе env файла конфигурации не действует, поскольку Xray находит файл конфигурации до чтения этого раздела.
Каталог с несколькими конфигурациями
- Имя:
XRAY_LOCATION_CONFDIR. - Значение по умолчанию:
"".
Файлы .json из этого каталога читаются в порядке имён как несколько файлов конфигурации.
Запись в разделе env файла конфигурации не действует, поскольку Xray находит каталог конфигурации до чтения этого раздела.
Этот параметр имеет более низкий приоритет, чем аргумент запуска confdir.
Строгий синтаксический анализатор JSON
- Имя:
XRAY_JSON_STRICT. - Значение по умолчанию:
false.
По умолчанию при запуске Xray использует собственный синтаксический анализатор JSON, который удаляет из конфигурации комментарии и другие нестандартные символы. Если файлы конфигурации строго соответствуют стандарту JSON (RFC 8259), этот параметр позволяет использовать стандартный анализатор, способный быстрее обрабатывать очень большие конфигурации.
Запись в разделе env файла конфигурации не действует, поскольку Xray должен выбрать анализатор JSON до чтения этого раздела.
Путь к файлам ресурсов
- Имя:
XRAY_LOCATION_ASSET. - Значение по умолчанию: определённые каталоги FHS или каталог исполняемого файла Xray.
Эта переменная задаёт каталог, содержащий файлы geoip.dat и geosite.dat. Если она не указана, программа ищет файлы ресурсов в следующем порядке:
./
/usr/local/share/xray
/usr/share/xray2
3
Другие доступные переменные
XRAY_LOCATION_CERTXRAY_BUF_READVXRAY_BUF_SPLICEXRAY_VMESS_PADDINGXRAY_CONE_DISABLEDXRAY_RAY_BUFFER_SIZEXRAY_BROWSER_DIALERXRAY_XUDP_SHOWXRAY_XUDP_BASEKEYXRAY_TUN_FD
Эти параметры предназначены для специализированных сценариев. Их точное назначение можно узнать из исходного кода.